1
복사 제어의 메커니즘
AI037Lesson 16
00:00

C++ 객체의 생애 주기를 완전히 이해하는 것은 바로 힙과 스택내에서 존재하는 메커니즘을 장악하는 것입니다. 복사 제어는 클래스가 자신의 생명주기 를 두 가지 연산을 통해 관리하는 방식을 정의합니다: 복사 생성자복사 대입 연산자입니다.

1. 초기화와 대입의 차이

직접 초기화(예: string dots(10, '.'))는 생성자를 직접 호출합니다. 그러나 복사 초기화 (string s2 = dots)는 복사 생성자를 사용합니다. 초기화와 달리, 대입 (trans = accum)은 기존 객체를 연산자=를 사용하여 덮어씁니다. 중요한 제약 조건은 복사 생성자의 매개변수가 참조형이어야 한다는 점입니다(const Foo&)이어야 합니다. 그렇지 않으면 값에 따라 인수를 전달하면 무한 재귀 루프 복사 호출의 무한 루프가 발생하게 됩니다.

소스 객체[데이터 A]목적지 객체[데이터 A]멤버 단위 복사복사 생성자 / 연산자=

2. 자동 생성의 역할

이 멤버들을 정의하지 않으면 컴파일러가 자동 생성된 버전을 제공합니다. 이 버전들은 멤버 단위 복사를 수행합니다. 하지만 간단한 타입에는 충분하지만, 동적 메모리를 관리하는 클래스에서는 종종 실패하며, 둔한 포인터나 중복 해제 문제를 유발할 수 있습니다.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>